<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            创建一个Person构造函数
            -在Person构造函数中。为每一个对象都添加了一个sayName方法
            目前我们的方法是在构造函数内部创建的
            也就是构造函数每执行一次就会创建一个新的sayName方法
            也就是所有实例的sayName就是唯一的。
            这样就导致了构造函数执行一次就会创建一个新的方法
            执行1000次就会创建10000个新的方法，而10000个方法都是一摸一样的
            这是完全没必要的，完全可以使所有的对象共享同一个方法
        */
       
       function Person(name,age,gender){
           this.name=name;
           this.age=age;
           this.gender=gender;
           //向对象中添加一个方法
        //    this.sayName=function(){
        //        alert(this.name);
        //    }

        this.sayName=fun;
       }

       //将sayName 方法在全局作用域中定义
       /* 
        将函数定义在全局作用域，污染了全局作用域的命名空间
        而且定义在全局作用域中也很不安全
       */
       function fun(){

        alert(this.name);
       }
       //创建一个Person的实例
       var per=new Person("刘诗诗",35,"女");
       var per2=new Person("杨紫",28,"女");
       per.sayName();
       per2.sayName();

      // console.log(per.sayName==per2.sayName);


    </script>
</head>
<body>
    
</body>
</html>